package org.jsola.hr.vo;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.jsola.core.vo.BaseVO;

/**
 * @author wxz
 */
@EqualsAndHashCode(callSuper = true)
@ApiModel(description = "【检查考勤打卡】列表展示对象")
@Data
public class AttendPunchCheckVO extends BaseVO {

    private static final long serialVersionUID = 1L;
    
	/** 打卡编号 */
    @ApiModelProperty(notes = "打卡编号", example = "")
	private String punchNumber;

    /** 是否已设置考勤规则 */
    @ApiModelProperty(notes = "是否已设置考勤规则", example = "")
    private Boolean isSetPlan;

    /** 今日是否需要考勤;true-是,false-否 */
    @ApiModelProperty(notes = "今日是否需要考勤;true-是,false-否", example = "")
    private Boolean isTodayAttend;

    /** 是否白名单;true-是,false-否 */
    @ApiModelProperty(notes = "是否白名单;true-是,false-否", example = "")
    private Boolean isWhitelist;

    /** 是否打卡时间段内;true-是,false-否 */
    private Boolean isInPunchTime;

    @ApiModelProperty(notes = "是否特殊日期", example = "true-是,false-否")
    private Boolean isSpecialDate;

    /** 特殊日期是否需要打卡;true-是,false-否 */
    @ApiModelProperty(notes = "特殊日期是否需要打卡;true-是,false-否", example = "")
    private Boolean isNeedPunchOfDaily;

    /** 是否在打卡范围内;1-是,0-否 **/
    @ApiModelProperty(notes = "是否在打卡范围内;1-是,0-否", example = "")
    private Integer rangeState;
    
    /** 上班还是下班;1-上班打卡,2-下班打卡,3-今日已完成打卡 */
    @ApiModelProperty(notes = "上班还是下班;1-上班打卡,2-下班打卡,3-今日已完成打卡", example = "")
    private Integer workStatus;
    
    /** 打卡状态;0-打卡异常,1-正常,2-迟到,3-早退 */
    @ApiModelProperty(notes = "打卡状态;0-打卡异常,1-正常,2-迟到,3-早退", example = "")
    private Integer punchStatus;

    /** 公司ID */
    @ApiModelProperty(notes = "公司ID", example = "")
    private String companyId;

    /** 公司名称 **/
    @ApiModelProperty(notes = "公司名称", example = "")
    private String companyName;
    
    /** 上班时间 **/
    @ApiModelProperty(notes = "上班时间", example = "")
    private String onWorkTime;

    /** 下班时间 **/
    @ApiModelProperty(notes = "上班时间", example = "")
    private String offWorkTime;
    
    /** 上班打卡时间 */
    @ApiModelProperty(notes = "上班打卡时间", example = "")
    private String onWorkPunchTime;
    
    /** 下班打卡时间 */
    @ApiModelProperty(notes = "下班打卡时间", example = "")
    private String offWorkPunchTime;

    /** 最后下班打卡时间 */
    @ApiModelProperty(notes = "最后下班打卡时间", example = "")
    private String offWorkPunchTimeLast;
    
    /** 迟到或者早退分钟数 */
    @ApiModelProperty(notes = "迟到或者早退分钟数", example = "")
    private Integer minutes;

    /** 是否配置了wifi打卡 */
    @ApiModelProperty(notes = "是否配置了wifi打卡", example = "")
    private Boolean isWifiConfig;

    /** 是否匹配到wifi打卡 */
    @ApiModelProperty(notes = "是否匹配到wifi打卡", example = "")
    private Boolean isWifiMatch;

    /** 打卡wifi */
    @ApiModelProperty(notes = "打卡wifi", example = "")
    private String WifiName;
    
    /** 打卡地点 */
    @ApiModelProperty(notes = "打卡地点", example = "")
    private String punchLocation;

    /** 考勤规则ID */
    @ApiModelProperty(notes = "考勤规则ID", example = "")
    private String attendPlanId;

    /**
     * 范围外打卡 ; 1-允许范围外打卡，记录为地点异常,2-允许范围外打卡，记录为正常外勤,3-不允许范围外打卡
     */
    @ApiModelProperty(notes = "范围外打卡 ; 1-允许范围外打卡，记录为地点异常,2-允许范围外打卡，记录为正常外勤,3-不允许范围外打卡", example = "")
    private Integer punchRange;

    /**
     * 员工打卡时必须拍照 ; 1-是,0-否
     */
    @ApiModelProperty(notes = "员工打卡时必须拍照 ; 1-是,0-否", example = "")
    private Boolean isTakePhoto;
    /**
     * 只能拍照 ; 备注不允许上传本地图片;1-是,0-否
     */
    @ApiModelProperty(notes = "只能拍照 ; 备注不允许上传本地图片;1-是,0-否", example = "")
    private Boolean isOnlyPhoto;

    /** 上班打卡或下班打卡是否完成 */
    @ApiModelProperty(notes = "上班打卡或下班打卡是否完成", example = "")
    private Boolean completedWork;

    /** 时间段 */
    @ApiModelProperty(notes = "时间段;09:00-10:00|11:00-12:00", example = "")
    private String period;

    /** 下班时间 */
    @ApiModelProperty(notes = "下班时间", example = "")
    private String endOffWorkTime;

    /** 当日工作时长 */
    private Integer workTime;

    /** 打卡序号 */
    @ApiModelProperty(notes = "打卡序号", example = "")
    private String punchSerial;

    @ApiModelProperty(notes = "打卡距离超过了多少")
    private Double exceed;
}
